﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoDatos;
using Entidades.Negocio;
using Entidades;
using System.Data.Objects;

namespace LogicaNegocios
{
    static public class RolCapacitacionLN
    {
        static public RolCapacitacion agregarRolCapacitacion(this RolCapacitacion rolCapacitacionview)
        {
            try
            {
                MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
                ROL_CAPACITACION rolCapacitacion = rolCapacitacionview.toROL_CAPACITACION();
                rolCapacitacion.CHRESTADO = Constantes.ESTADO_HABILITADO;
                contexto.ROL_CAPACITACION.AddObject(rolCapacitacion);
                contexto.SaveChanges();
                return rolCapacitacion.toRolCapacitacion();
            }
            catch( Exception e)
            {
                throw e;
            }
        }

        static public void modificarRolCapacitacion(this RolCapacitacion rolCapacitacionview)
        {
            MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
            ROL_CAPACITACION rolCapacitacion = contexto.ROL_CAPACITACION.Where(rc => rc.INTCODROLCAPACITACION == rolCapacitacionview.INTCODROLCAPACITACION).FirstOrDefault();
            rolCapacitacion.VCHTITULO = rolCapacitacionview.VCHTITULO;
            rolCapacitacion.VCHDESCRIPCION = rolCapacitacionview.VCHDESCRIPCION;
            rolCapacitacion.DTMFECHA = rolCapacitacionview.DTMFECHA;
            rolCapacitacion.CHRESTADO = Constantes.ESTADO_HABILITADO;
            rolCapacitacion.VCHUSUARIOCREACION = rolCapacitacionview.VCHUSUARIOCREACION;
            rolCapacitacion.DTMFECHACREACION = rolCapacitacionview.DTMFECHACREACION;
            rolCapacitacion.VCHUSUARIOMODIFICACION = rolCapacitacionview.VCHUSUARIOMODIFICACION;
            rolCapacitacion.DTMFECHAMODIFICACION = rolCapacitacionview.DTMFECHAMODIFICACION;
            contexto.SaveChanges();
        }

        static public void eliminarRolCapacitacion(this RolCapacitacion rolCapacitacionview)
        {
            MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
            ROL_CAPACITACION rolCapacitacion = contexto.ROL_CAPACITACION.Where(rc => rc.INTCODROLCAPACITACION == rolCapacitacionview.INTCODROLCAPACITACION).FirstOrDefault();
            rolCapacitacion.CHRESTADO = Constantes.ESTADO_ELIMINADO;
            rolCapacitacion.VCHUSUARIOMODIFICACION = rolCapacitacion.VCHUSUARIOMODIFICACION;
            rolCapacitacion.DTMFECHAMODIFICACION = rolCapacitacion.DTMFECHAMODIFICACION;
            contexto.SaveChanges();
        }


        static public List<RolCapacitacion> listarRolCapacitacion(this FiltroRolCapacitacion filtroRolCapacitacion)
        {
            MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
            DateTime desde = Funciones.StringToDate(filtroRolCapacitacion.FechaDesde);
            DateTime filtroHastaDate = Funciones.StringToDate(filtroRolCapacitacion.FechaHasta);
            DateTime hasta = new DateTime(filtroHastaDate.Year, filtroHastaDate.Month, filtroHastaDate.Day, 23, 59, 59);

            List<ROL_CAPACITACION> listaROL_CAPACITACION = contexto.ROL_CAPACITACION.Where(a => a.DTMFECHA >= desde &&
                a.DTMFECHA <= hasta && a.CHRESTADO == Constantes.ESTADO_HABILITADO
                && a.VCHDESCRIPCION.Contains(filtroRolCapacitacion.Descripcion)
                && a.VCHTITULO.Contains(filtroRolCapacitacion.Titutlo)
                ).OrderBy(a => a.DTMFECHA) .ToList();
            List<RolCapacitacion> listaRolCapacitacion = new List<RolCapacitacion>();
            foreach (ROL_CAPACITACION rolCapacitacion in listaROL_CAPACITACION)
            {
                listaRolCapacitacion.Add(rolCapacitacion.toRolCapacitacion());
            }
            return listaRolCapacitacion;
        }

        static public RolCapacitacion obtenerRolCapacitacion(this FiltroRolCapacitacion filtroRolCapacitacion)
        {
            MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
            ROL_CAPACITACION rolCapacitacion = contexto.ROL_CAPACITACION.Where(rc => rc.INTCODROLCAPACITACION == filtroRolCapacitacion.id).FirstOrDefault();
            return rolCapacitacion.toRolCapacitacion();
        }

        static public List<RolCapacitacion> listarRolCapacitacionReproductor()
        {
            DateTime hoy = DateTime.Now;
            MILPO_VIDEOS_Entities contexto = new MILPO_VIDEOS_Entities();
            List<ROL_CAPACITACION> listaROL_CAPACITACION = contexto.ROL_CAPACITACION.
                Where(rc => EntityFunctions.DiffDays(rc.DTMFECHA,hoy) <= rc.INTDIASAMOSTRAR).ToList();
            List<RolCapacitacion> listaRolCapacitacion = new List<RolCapacitacion>();
            foreach (ROL_CAPACITACION rolCapacitacion in listaROL_CAPACITACION)
            {
                listaRolCapacitacion.Add(rolCapacitacion.toRolCapacitacion());
            }
            return listaRolCapacitacion;

        }
        
        
        
    }
}
